#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <aio.h>

int main() {
    // 打开文件
    int fd = open("example.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }

    // 创建aiocb结构体
    struct aiocb aio_cb;
    memset(&aio_cb, 0, sizeof(struct aiocb));
    aio_cb.aio_fildes = fd;
    aio_cb.aio_buf = "Hello, World!";
    aio_cb.aio_nbytes = strlen(aio_cb.aio_buf) + 1;

    // 执行异步写操作
    if (aio_write(&aio_cb) != 0) {
        perror("aio_write");
        exit(EXIT_FAILURE);
    }

    // 等待异步操作完成
    ssize_t ret;
    while ((ret = aio_error(&aio_cb)) == EINPROGRESS) {
        usleep(1000); // 等待一段时间再次检查
    }

    // 检查异步操作结果
    if (ret == 0) {
        printf("Write completed successfully!\n");
    } else {
        perror("aio_error");
        exit(EXIT_FAILURE);
    }

    // 关闭文件
    close(fd);

    return 0;
}
